package com.agile.leetcode.jdk8.functional;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * 常用的函数式接口
 * @Author ChenZhangKun
 * @Date 2020/9/1 14:35
 */
public class SupllierDemo {
    public static void main(String[] args) {
        // 提供者，无参数有返回
        Supplier<String> supplier=()->"a";
        String s = supplier.get();
        System.out.println(s);
    }
}

/**
 * 消费者，有参数无返回
 */
class ConsumerDemo{
    public static void main(String[] args) {
        Consumer<String> consumer=(v1)-> System.out.println(v1);
        consumer.accept("abc");
    }
}

/**
 * 有参数，有返回
 * 返回值为boolean类型
 */
class PredicateDemo{
    public static void main(String[] args) {
        Predicate<String> predicate=(v1)->
           v1=="a";
        System.out.println(predicate.test("a"));
    }
}

/**
 * 有参数function<T,R>
 * 返回值类型为将R类型
 * 目的是将T参数类型转为R参数类型
 */
class FunctionDemo{
    public static void main(String[] args) {
        Function<String,Integer> function=(v1)->{
            return Integer.parseInt(v1);
        };
        System.out.println(function.apply("1"));
        MyFunction myFunction=(v1 -> System.out.println(v1));
        myFunction.apply("1234");
    }


}
@FunctionalInterface
interface MyFunction{
    void apply(String v1);
}
class Test{
    public static void main(String[] args) {
        String name=null;
        // 阿里巴巴java开规范，防止空指针异常
        if (name!=null){
            switch (name){
                case "1":
                    System.out.println(name);
                    break;
                default:
                    System.out.println(2);
            }
        }else {
            System.out.println("weikong");
        }
    }
}